package wheel.arithmetic;


/**
 * 插入排序-希尔排序(简单插入算法的改进版）又称缩小增量排序
 */
public class ShellSort {

    public static Integer[] execute(Integer[] arr){
        int temp = 0;
        int num =1;
        int gap = arr.length/2;
        while(gap>0){
            for (int i = gap; i < arr.length; i++) {
                for (int j = gap; j < arr.length; j++) {
                    if (arr[j-gap]>arr[j]){
                        temp = arr[j-gap];
                        arr[j-gap] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            gap/=2;
        }
        return arr;
    }





    /**
     *  应该是错误的希尔排序算法实现。
     *  耗时: 2205ms 2241ms 一万个
     *  十万个就老久了，怎么看也不是简单插入排序的改良啊。
     */
//    public static Integer[] execute(Integer[] arr){
//        int temp = 0;
//        int num =1;
//        int gap = arr.length/2;
//        while(gap>0){
//            for (int i = gap; i < arr.length; i++) {
//                for (int j = gap; j < arr.length; j++) {
//                    if (arr[j-gap]>arr[j]){
//                        temp = arr[j-gap];
//                        arr[j-gap] = arr[j];
//                        arr[j] = temp;
//                    }
//                }
//            }
//            gap/=2;
//        }
//        return arr;
//    }


}
